using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace Robotics.API
{
	/// <summary>
	/// Represents an object capable of generate or receive commands and manage its responses
	/// </summary>
	[ComVisible(true)]
	[Guid("86D12586-2145-422a-9C58-2DACB6407C20")]
	[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
	public interface IMessageSource
	{
		/// <summary>
		/// Gets the name of the module that this IMessageSource object interfaces.
		/// </summary>
		string ModuleName
		{
			get;
		}

		/// <summary>
		/// Manages the Response objects for the Command objects generated by this IMessageSource object
		/// </summary>
		/// <param name="response">The Response for the Command generated by this IMessageSource object</param>
		void ReceiveResponse(Response response);
	}
}
